forum_access.func.php API参考文档
# forum_access.func.php API 参考文档
## 概述
`forum_access.func.php` 是 Xiuno BBS 的权限模型层,提供了权限检查机制、权限CRUD操作等核心功能。
## 原始 CURD 操作
### `forum_access__create()`
#### 说明
```php
function forum_access__create(array $arr): int|false
```
创建权限记录,最原生的插入操作,无关联其他数据。
#### 参数
- `$arr`: 要插入的权限数据数组,键为字段名,值为字段值
#### 返回值
- 成功返回插入的记录 ID
- 失败返回 FALSE
#### 示例
```php
$arr = array(
'fid' => 1,
'gid' => 2,
'allowread' => 1,
'allowthread' => 1,
'allowpost' => 1
);
$r = forum_access__create($arr);
```
### `forum_access__update()`
#### 说明
```php
function forum_access__update(int $fid, int $gid, array $arr): int|false
```
更新权限记录,最原生的更新操作。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
- `$arr`: 要更新的数据数组
#### 返回值
- 成功返回受影响的行数
- 失败返回 FALSE
#### 示例
```php
$update = array('allowread' => 1, 'allowthread' => 1);
$r = forum_access__update(1, 2, $update);
```
### `forum_access__read()`
#### 说明
```php
function forum_access__read(int $fid, int $gid): array|false
```
读取权限记录,最原生的查询操作。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
#### 返回值
- 成功返回权限数组
- 失败返回 FALSE
#### 示例
```php
$access = forum_access__read(1, 2);
```
### `forum_access__delete()`
#### 说明
```php
function forum_access__delete(int $fid, int $gid): int|false
```
删除权限记录,最原生的删除操作。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
#### 返回值
- 成功返回受影响的行数
- 失败返回 FALSE
#### 示例
```php
$r = forum_access__delete(1, 2);
```
### `forum_access__find()`
#### 说明
```php
function forum_access__find(array $cond = array(), array $orderby = array(), int $page = 1, int $pagesize = 20): array
```
查找权限列表,最原生的查询操作。
#### 参数
- `$cond`: 条件数组
- `$orderby`: 排序数组
- `$page`: 页码
- `$pagesize`: 每页数量
#### 返回值
- 返回权限列表数组
#### 示例
```php
$accesslist = forum_access__find(array('fid' => 1), array('gid' => 1), 1, 20);
```
## 关联 CURD 操作
### `forum_access_create()`
#### 说明
```php
function forum_access_create(array $arr): int|false
```
创建权限,包含关联操作。
#### 参数
- `$arr`: 要插入的权限数据数组
#### 返回值
- 成功返回插入的记录 ID
- 失败返回 FALSE
#### 示例
```php
$arr = array(
'fid' => 1,
'gid' => 2,
'allowread' => 1,
'allowthread' => 1,
'allowpost' => 1
);
$r = forum_access_create($arr);
```
### `forum_access_update()`
#### 说明
```php
function forum_access_update(int $fid, int $gid, array $arr): int|false
```
更新权限,包含关联操作。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
- `$arr`: 要更新的数据数组
#### 返回值
- 成功返回受影响的行数
- 失败返回 FALSE
#### 示例
```php
$update = array('allowread' => 1, 'allowthread' => 1);
$r = forum_access_update(1, 2, $update);
```
### `forum_access_replace()`
#### 说明
```php
function forum_access_replace(int $fid, int $gid, array $arr): int|false
```
替换权限,不存在则创建,存在则更新。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
- `$arr`: 权限数据数组
#### 返回值
- 成功返回插入或更新的结果
- 失败返回 FALSE
#### 示例
```php
$arr = array('allowread' => 1, 'allowthread' => 1);
$r = forum_access_replace(1, 2, $arr);
```
### `forum_access_padding()`
#### 说明
```php
function forum_access_padding(int $gid, bool $fill = FALSE): void
```
根据用户组 ID 补充权限。
#### 参数
- `$gid`: 用户组 ID
- `$fill`: 是否填充权限,TRUE 为创建,FALSE 为删除
#### 返回值
- 无返回值
#### 示例
```php
// 为用户组 2 创建所有板块的权限
forum_access_padding(2, TRUE);
// 删除用户组 2 的所有板块权限
forum_access_padding(2, FALSE);
```
### `forum_access_read()`
#### 说明
```php
function forum_access_read(int $fid, int $gid): array
```
读取权限,包含数据格式化。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
#### 返回值
- 返回格式化后的权限数组
#### 示例
```php
$access = forum_access_read(1, 2);
```
### `forum_access_delete()`
#### 说明
```php
function forum_access_delete(int $fid, int $gid): int|false
```
删除权限,包含关联操作。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
#### 返回值
- 成功返回受影响的行数
- 失败返回 FALSE
#### 示例
```php
$r = forum_access_delete(1, 2);
```
### `forum_access_delete_by_fid()`
#### 说明
```php
function forum_access_delete_by_fid(int $fid): void
```
删除指定板块的所有权限。
#### 参数
- `$fid`: 板块 ID
#### 返回值
- 无返回值
#### 示例
```php
forum_access_delete_by_fid(1);
```
### `forum_access_find()`
#### 说明
```php
function forum_access_find(array $cond = array(), array $orderby = array(), int $page = 1, int $pagesize = 20): array
```
查找权限列表,包含数据格式化。
#### 参数
- `$cond`: 条件数组
- `$orderby`: 排序数组
- `$page`: 页码
- `$pagesize`: 每页数量
#### 返回值
- 返回格式化后的权限列表数组
#### 示例
```php
$accesslist = forum_access_find(array('fid' => 1), array('gid' => 1), 1, 20);
```
### `forum_access_find_by_fid()`
#### 说明
```php
function forum_access_find_by_fid(int $fid): array
```
根据板块 ID 查找权限列表。
#### 参数
- `$fid`: 板块 ID
#### 返回值
- 返回权限列表数组
#### 示例
```php
$accesslist = forum_access_find_by_fid(1);
```
## 权限检查
### `forum_access_user()`
#### 说明
```php
function forum_access_user(int $fid, int $gid, string $access): bool
```
普通用户权限判断。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
- `$access`: 权限名称,如 'allowread', 'allowthread', 'allowpost' 等
#### 返回值
- 有权限返回 TRUE
- 无权限返回 FALSE
#### 示例
```php
// 检查用户组 2 是否有板块 1 的阅读权限
$has_access = forum_access_user(1, 2, 'allowread');
```
### `forum_access_mod()`
#### 说明
```php
function forum_access_mod(int $fid, int $gid, string $access): bool
```
板块版主权限判断。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
- `$access`: 权限名称,如 'allowtop', 'allowmove', 'allowupdate' 等
#### 返回值
- 有权限返回 TRUE
- 无权限返回 FALSE
#### 示例
```php
// 检查用户组 3 是否有板块 1 的置顶权限
$has_access = forum_access_mod(1, 3, 'allowtop');
```
### `forum_is_mod()`
#### 说明
```php
function forum_is_mod(int $fid, int $gid, int $uid): bool
```
判断用户是否为板块版主。
#### 参数
- `$fid`: 板块 ID
- `$gid`: 用户组 ID
- `$uid`: 用户 ID
#### 返回值
- 是版主返回 TRUE
- 不是版主返回 FALSE
#### 示例
```php
// 检查用户 1 是否为板块 1 的版主
$is_mod = forum_is_mod(1, 3, 1);
```
## 其他方法
### `forum_access_format()`
#### 说明
```php
function forum_access_format(array &$access): void
```
格式化权限数据。
#### 参数
- `$access`: 权限数组(引用传递)
#### 返回值
- 无返回值,直接修改传入的数组
#### 示例
```php
$access = forum_access__read(1, 2);
forum_access_format($access);
```
### `forum_access_count()`
#### 说明
```php
function forum_access_count(array $cond = array()): int|false
```
统计权限数量。
#### 参数
- `$cond`: 条件数组
#### 返回值
- 成功返回权限数量
- 失败返回 FALSE
#### 示例
```php
$count = forum_access_count(array('fid' => 1));
```